<?php 

namespace Admin\Controller;
use Think\Controller;

/**
 * 商品管理控制器
 * @author 艾逗笔<765532665@qq.com>
 */
class GoodsController extends BaseController {

    /**
     * 添加商品
     * @author 艾逗笔<765532665@qq.com>
     */
    public function add() {
        if (IS_POST) {//自动验证
            $_validate = array(
                array('name', 'require', '商品名不能为空', 1, 'regex', 3),
                array('info', 'require', '商品简介不能为空', 1, 'regex', 3),
                array('downtime', 'require', '请选择商品下架时间', 1, 'regex', 3),
                array('downtime', '13,19', '商品下架时间格式不正确', 2, 'length', 1),
                array('price', 'require', '商品价格不能为空', 1, 'regex', 3),
                array('price', 'number', '商品价格必须为数字', 2, 'regex', 3),
                array('img', 'require', '商品图片不能为空', 1, 'regex', 3)
            );
            $Goods = M('goods');
            $Goods->setProperty('_validate', $_validate);
            if (!$Goods->create()) {
                $this->error($Goods->getError());
            } else {
                $goods_add = $Goods->add();
                if ($goods_add) {
                    $this->success('添加商品成功', U('lists'));
                } else {
                    $this->error('添加商品失败');
                }
            }
        } else {
            $this->addCrumb('系统管理', U('Index/index'), '')
                 ->addCrumb('商品管理', U('Goods/lists'), '')
                 ->addCrumb('商品添加', '', 'active')
                 ->addNav('商品添加', '', 'active')
                 ->setModel('goods')
                 ->addFormField('name', '商品名称', 'text')
                 ->addFormField('price', '商品价格', 'text')
                 ->addFormField('info', '商品简介', 'text')
                 ->addFormField('img', '商品图片', 'image')
                 ->addFormField('downtime', '下架时间', 'time')
                 ->addFormField('status', '商品状态', 'radio', array('options'=>array('上架'=>'上架','下架'=>'下架','作废'=>'作废'),'value'=>'上架'))
                 
                 // ->addFormField('roles', '用户角色', 'checkbox', array('options'=>'callback','callback_name'=>'get_user_roles'))
                 ->common_add();
        }
    }

    /**
     * 编辑商品
     * @author 艾逗笔<765532665@qq.com>
     */
    public function edit() {
        if (IS_POST) {
            if (!I($name)) {
                $this->error('商品名称不能为空');
            }
            if (!I($info)) {
                $this->error('商品简介不能为空');
            }
            if (!I($img)) {
                $this->error('商品图片不能为空');
            }
            if (!I($price)) {
                $this->error('商品价格不能为空');
            }
        
            $_validate[] = array('name', 'require', '商品名称不能为空', 1, 'regex', 3);
            $_validate[] = array('info', 'require', '商品简介不能为空', 1, 'regex', 3);
            $_validate[] = array('price', 'require', '商品价格不能为空', 1, 'regex', 3);
            $_validate[] = array('price', 'number', '商品价格必须为数字', 2, 'regex', 3);
        
            $Goods = M('goods');
            $Goods->setProperty('_validate', $_validate);
            $data['name'] = I('name');
            $data['info'] = I('info');
            $data['id'] = I('get.id');
            $data['price'] = I('price');
            $data['img'] = I('img');
            $data['status'] = I('status');
            $data['downtime'] = strtotime(I('downtime')); //将字符串形式的时间，转换为时间戳 -zsyk
            C('TOKEN_ON', false);
            if (!$Goods->create($data)) {
                $this->error($Goods->getError());
            } else {
                $rst=$Goods->save($data);
                $this->success('修改商品信息成功', U('lists'));
            }
            
        } else {
            $Goods = M('goods')->find(I('id'));
			$Goods['downtime'] = date('Y-m-d H:i', $Goods['downtime']); //将时间戳转换成字符串时间格式用于输出到JS处理 -zsyk
            $this->addCrumb('系统管理', U('Index/index'), '')
                 ->addCrumb('商品管理', U('Goods/lists'), '')
                 ->addCrumb('编辑商品', '', 'active')
                 ->addNav('编辑商品', '', 'active')
                 ->setModel('goods')
                 ->addFormField('name', '商品名称', 'text')
                 ->addFormField('price', '商品价格（元）', 'text')
                 ->addFormField('info', '商品简介', 'text')
                 ->addFormField('img', '商品图片', 'image')
                 ->addFormField('downtime', '下架时间', 'time')
                 ->addFormField('status', '商品状态', 'radio', array('options'=>array('上架'=>'上架','下架'=>'下架','作废'=>'作废')))
                 
                 // ->addFormField('roles', '用户角色', 'checkbox', array('options'=>'callback','callback_name'=>'get_user_roles'))
                 ->setFormData($Goods)
                 ->common_edit();
        }
    }

    /**
     * 商品列表
     * @author 艾逗笔<765532665@qq.com>
     */
    public function lists() {
        $this->addCrumb('系统管理', U('Index/index'), '')
             ->addCrumb('商品管理', U('Goods/lists'), '')
             ->addCrumb('商品列表', '', 'active')
             ->addNav('商品列表', '', 'active')
             ->addButton('添加商品', U('add'), 'btn btn-primary')
             ->setTip('温馨提示：商品删除之后将无法找回,不需要的商品可选择下架或作废')
             ->setModel('goods')
             ->setListOrder('id desc')
             ->setListSearch(array(
                'name' => '商品名称',
                'info' => '商品简介',
                'price' => '商品价格',
                'downtime' => '下架时间',
                'status' => '商品状态'
             ))
             ->addListItem('name', '商品名称')
             ->addListItem('info', '商品简介')
             ->addListItem('img', '商品图片','image')
             ->addListItem('price', '商品价格')
             ->addListItem('downtime', '下架时间')
             ->addListItem('status', '商品状态')
             ->addListItem('id', '操作', 'custom', array('options'=>array('edit'=>array('编辑',U('edit',array('id'=>'{id}')),'btn btn-primary btn-sm icon-edit',''),'sent'=>array('推送消息',U('Template/add',array('id'=>'{id}')),'btn btn-primary btn-sm icon-edit',''),'delete'=>array('删除',U('delete',array('id'=>'{id}')),'btn btn-danger btn-sm icon-delete', ''))))
             ->setListPer(5)
             ->common_lists();

    }

    /**
     * 删除商品
     * @author 艾逗笔<765532665@qq.com>
     */
    public function delete() {
        $goods_id = I('id');
        $res = M('goods')->delete($goods_id);
        if (!$res) {
            $this->error('删除商品失败');
        } else {
            $this->success('删除商品成功', U('lists'));
        }
    }

}

?>